//leetcode 101. 对称二叉树
//给定一个二叉树，检查它是否是镜像对称的。

//例如，二叉树[1, 2, 2, 3, 4, 4, 3] 是对称的。

//    1
//   / \
//  2   2
// / \ / \
//3  4 4  3

#include <stdio.h>
#include "tree_node.h"

/**
 * 左右子树是否对称
 */
static int isLeftSymmetricRight(struct TreeNode *left, struct TreeNode *right)
{

    if (left == NULL && right == NULL)
    {
        return 1;
    }
    if (left != NULL && right != NULL)
    {
        return left->val == right->val &&                        //值相等
               isLeftSymmetricRight(left->left, right->right) && // 左子树的左孩子和右子树的右孩子对称
               isLeftSymmetricRight(left->right, right->left);   // 左子树的右孩子和右子树的左孩子对称
    }
    return 0;
}

static int isSymmetric(struct TreeNode *root)
{
    if (root == NULL)
    {
        return 1;
    }
    return isLeftSymmetricRight(root->left, root->right);
}

int main11()
{
    printf("11");
}